package demo02.lambda;

/*
使用lambda优化日志案例
lambda的特点：延迟加载
使用前提：必须有函数式接口
 */
public class Demo02Lambda {
    //定义一个写日志的方法，方法传递写日志的等级和消息
    public static void showLog(int level, MessageBuilder mb) {
        if (level == 1) {
            System.out.println(mb.builderMessage());
        }
    }

    public static void main(String[] args) {
        //定义三个日志信息
        String str1 = "Hello";
        String str2 = " World,";
        String str3 = " Java";

        //使用函数式接口进行实现
 /*       showLog(1, new MessageBuilder() {
            @Override
            public String builderMessage() {
                return str1+str2+str3;
            }
        });*/
        //使用lambda表达式
//        showLog(1,()->str1+str2+str3);
        //使用函数式接口的优点:延迟执行

        showLog(2, () -> {
            System.out.println("如果优先性不够达到输出优先级，则不会进行操作");
            return str1 + str2 + str3;
        });


    }
}
